package com.chengfei.thread.sync;

/**
 * 内置锁，每个java对象都是一个内置锁
 *
 * @author chengfei5
 * @date 2019/1/7
 */
public class Demo1 {
    private int value;

    /**
     * 修饰静态方法，内置锁是当前的class字节码对象
     *
     * @return
     */
//    public static synchronized int getPrevious() {
//        return value--;
//    }
    public int test() {
        synchronized (Integer.valueOf(value)) {
            if (value > 0) {
                return value;
            } else {
                return -1;
            }
        }

    }

    /**
     * synchronized 放在普通方法上
     * 内置锁就是当前类的实例
     * 修饰静态方法
     *
     * @return
     */
    public synchronized int getNext() {
        return value++;
    }

    public static void main(String[] args) {
        Demo1 demo1 = new Demo1();
        new Thread(() -> System.out.println(demo1.getNext()));
    }
}
